package com.shrct.businessprocess.purchase;

import com.shrct.businessprocess.organization.RCEmployee;
import com.shrct.businessprocess.project.RCCustomerContract;
import com.shrct.businessprocess.project.RCProject;
import com.shrct.businessprocess.project.RCProjectMoney;
import com.shrct.businessprocess.purchase.RCPurchaseIncomeRequest;
import com.shrct.businessprocess.purchase.impl.RCPurchaseIncomeProcessImpl;
import com.shrct.businessprocess.purchase.proxy.RCPurchaseIncomeProcessProxy;
import edu.fudan.langlab.domain.workflow.BusinessProcess;
import edu.fudan.mylang.pf.EntityImplementation;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = RCPurchaseIncomeProcessImpl.class)
public interface RCPurchaseIncomeProcess extends BusinessProcess {
  public abstract void start(final RCProject project, final RCCustomerContract customerContract, final String comment, final Procedure1<? super RCPurchaseIncomeRequest> init);
  
  public abstract void businessManAudit_agree(final String comment);
  
  public abstract void businessManAudit_reject(final String comment);
  
  public abstract void salerModify_cancel(final String comment);
  
  public abstract void salerModify_modify(final String comment);
  
  public abstract void financeLeaderAudit_agree(final String comment);
  
  public abstract void financeLeaderAudit_reject(final String comment);
  
  public abstract void financeManRequestInvoice_agree(final String comment, final String invoiceNumber);
  
  public abstract void financeManRequestInvoice_reject(final String comment);
  
  public abstract RCPurchaseIncomeRequest getIncomeRequest();
  
  public abstract RCPurchaseIncomeProcess setIncomeRequest(final RCPurchaseIncomeRequest incomeRequest);
  
  public abstract RCProject getProject();
  
  public abstract RCPurchaseIncomeProcess setProject(final RCProject project);
  
  public abstract RCCustomerContract getCustomerContract();
  
  public abstract RCPurchaseIncomeProcess setCustomerContract(final RCCustomerContract customerContract);
  
  public abstract String getInvoiceTitle();
  
  public abstract RCPurchaseIncomeProcess setInvoiceTitle(final String invoiceTitle);
  
  public abstract RCProjectMoney getAmount();
  
  public abstract RCPurchaseIncomeProcess setAmount(final RCProjectMoney amount);
  
  public abstract String getComment();
  
  public abstract RCPurchaseIncomeProcess setComment(final String comment);
  
  public abstract RCEmployee getStarter();
  
  public abstract RCPurchaseIncomeProcess setStarter(final RCEmployee starter);
  
  public abstract RCPurchaseIncomeProcessProxy toProxy();
}
